package com.ydlclass.loadbalance;

import com.ydlclass.message.YrpcMessage;

import java.net.InetSocketAddress;
import java.util.List;

/**
 * @author it楠老师
 * @createTime 2023-03-27
 */
public interface Selector {

    /**
     * 当服务列表发生变化，重新加载
     * @param serviceName 服务名
     */
    void reload(String serviceName, List<InetSocketAddress> newServiceList);

    /**
     * 基于消息，选择一种负载均衡算法，获取下一个服务地址
     * @param yrpcMessage 消息
     * @return 地址
     */
    InetSocketAddress getNext(YrpcMessage yrpcMessage);

}
